In today's computer networks, sharing data among devices has become desirable if not essential. Not only does the shared data need to be replicated on each device, but the replicated data must be synchronized so that changes made to one replica are reflected in all the others. Synchronization enables many users to work with their own local copy of shared data but have the shared data updated as if they were working on a single, centralized database. For shared data applications where users are geographically widely distributed, replication and synchronization are often the most efficient methods for effectively utilizing shared data.
In addition to desktop computers, workstations, and servers, modern computing environments often also include handheld computing devices that often weigh less than one pound and fit into a pocket, purse, or day planner. Modern computing environments range from private networks to the Internet. Although a wide range of application programs can be executed on handheld computers, shared data applications are particularly popular and well suited for these devices. Shared data applications include, among many others, electronic calendars and task lists, electronic mail organizers, and electronic address books.
Where the shared data applications on each device use the same file formats, synchronization is a relatively simple process. However, modern computing environments tend to be more complex, often having devices from multiple manufacturers, each with differing file formats making it difficult, if not impossible, to accurately synchronize shared data. This is often the case with calendaring applications. Records representing the same event are often stored in different formats on different devices. More specifically, some calendaring applications have the capability of representing a recurring appointment with a single complex record. A complex record typically contains a general rule and one or more exceptions. A general rule identifies information such as a beginning date and an ending date for the recurring appointment, the days of the week, month, or year on which the appointment falls, and a time for each of those days. An exception is a variance from the general rule. Exceptions fall into two categories: deletions—when an appointment does not occur, for example, on a given day or for a given week; and modifications—when the time, location, or other data for an appointment on a given day is changed. For example, a child's soccer practice might occur every Tuesday and Thursday from 5:30 to 6:30 PM in the months of March and April. There are, however, exceptions—the starting time for the second Tuesday in April will be 4:30 PM instead of 5:30, and there is no practice on the first Thursday in May.
Other less sophisticated applications represent a recurring event such as an appointment with a series of discrete records, one record for each appointment. In the soccer practice example fifteen discrete records are required—one record is for each practice on April 3, 5, 10, 12, 17, 19, 24, 26th and May 1, 8, 10, 15, 17, 22, 24, and 31st. Note, there is not a record for a practice on May 3, the first Thursday. Each record indicates a practice time of 5:30 to 6:30 PM except for April 10 when practice starts at 4:30 PM.
Conventional approaches typically fail when attempting to synchronize a recurring appointment represented by a single complex record on one device with the same recurring appointment stored as multiple discrete records on another device. What is needed is a system and method to accurately identify records representing recurring appointments as equivalent while facilitating the synchronization of each without regard to the format in which each is stored.